package operator.filter;

import io.reactivex.Observable;
import util.RxJavaHelper;

class FirstOperator {

    public static void main(String[] args) {
        first1();
//        first2();
//        first3();
    }


    /**
     * 取出第一个元素，如果没有发出任何元素则发出指定元素
     */
    static void first1(){
        Observable.just(1, 2, 3)
                .first(5)
                .subscribe(RxJavaHelper.getSingleConsumer());
//        Observable.empty()
//                .first(5)
//                .subscribe(RxJavaHelper.getSingleConsumer());
    }

    /**
     * 取出发射的第一个元素，如果未发出则结束事件
     */
    static void first2(){
//        Observable.just(1, 2, 3)
//                .firstElement()
//                .subscribe(RxJavaHelper.getMaybeConsumer());
        Observable.empty()
                .firstElement()
                .subscribe(RxJavaHelper.getMaybeConsumer());
    }

    /**
     * 取出发射的第一个元素，如果未发出则发出错误事件
     */
    static void first3(){
//        Observable.just(1, 2, 3)
//                .firstOrError()
//                .subscribe(RxJavaHelper.getSingleConsumer());
        Observable.empty()
                .firstOrError()
                .subscribe(RxJavaHelper.getSingleConsumer());
    }

}
